查看原文
其他

supervisor的使用

小白羊 360质量效能 2023-02-19





点击蓝字关注这个神奇的公众号~






对于脚本文件的运行,常常使用nohup的方式后台运行,这样在ctrl + c 或者当前终端退出的时候可以保证脚本不会停止, 但是并不能监控这个脚本的运行状态,也不能在这个程序异常退出后能自动重启。


supervisor 是用python开发的一套client/server服务, 是类Unix服务器下的服务监控工具(不能运行在windows平台下), 能方便的管理程序进程的启停和保证程序挂掉后自动重启。它是通过fork/exec方式把这些被管理的进程当做supervisor的子进程来启动的, 这样只要在配置文件中定义好要被管理的子进程项目的信息就可以保证这些项目被管理。superviror 目前支持python3.4及以上版本和python2.7版本运行。


安装


centos的可以用: 

ubuntu可以用:

python pip安装:

python easy_install 安装:


使用



1. 配置supervisor的管理器的配置文件(通常命名为supervisord.conf)

2. 配置被管理子进程项目的配置文件(通常为.ini后缀文件)

3. supervisord 命令启动supervisor

4. supervisorctl 命令管理子进程项目。


2.1、配置文件


supervisor本身的配置文件通常命名为supervisord.conf。它同时由supervisord和supervisorctl使用。如果在没有-c选项(用于显式告诉应用程序配置文件名的选项)的情况下启动supervisor,则supervisor将在以下位置中按指定顺序查找名为supervisord.conf的文件。将使用找到的第一个文件。


所以可以在以上提到的路径中来配置配置文件, 也可以通过 supervisord  -c 的方式来指定运行的时候使用的配置文件的位置。


用 yum或者apt 安装的默认会在/etc/目录下生成supervisord.conf 文件,如下:



如果/etc 目录下没有此文件也可以自己生成, 生成命令如下:



我把一些比较常用的supervisord.conf配置项来然后加了中文注释, 方便进行按需配置



子进程配置文件的常用的配置项如下我也加了注释:



2.2、实战练习


下面编写一个python文件当做要运行的子进程, 文件路径为/home/yz/supervisor_study/hello.py,文件hello.py 内容如下:



这个Python文件会持续输出 hello world 到子进程配置的日志里边。



查看当前路径然后配置supervisord.conf:

因为是练习项目所以我把配置文件和日志文件都放在了/home/yz/supervisor_study/logs 这个文件夹。


进入/etc 目录下看是否有supervisord.conf配置文件, 若没有此文件通过如下命令生成:echo_supervisord_conf >> supervisord.conf



修改 /etc/supervisord.conf 配置文件 主要修改内容如下:


2.2.1 配置生成日志的路径


我想让supervisor本身的日志文件生成到项目路径logs文件夹下, 路径为: 



所以修改/etc/supervisord.conf配置如下:



2.2.2 指定要被管理的项目的配置文件路径


默认被管理子进程的配置文件目录为/etc/supervisord.d 不修改则会去这个目录下找配置文件。同样我想把被管理项目的配置文件放到我的项目目录下, 所以对/etc/supervisord.conf 做了如下修改



/etc/supervisord.conf文件配置完成。


看下被管理子进程项目的配置文件如何写:一个子进程配置文件可以放一个或多个被管理的项目, 如果项目多的话可以一个配置文件放置一个管理项目, 这样便于管理。因为指定了被管理项目的配置文件的位置为/home/yz/supervisor_study目录下的.ini文件, 所以去这个目录下编写配置文件(hello.ini)内容如下:



配置完成 supervisord 命令启动项目



logs文件夹下会有三个文件:



hello.* 文件是被管理的子项目的日志文件。

supervisor.log 是supervisor的日志文件,保存的是supervisr启动时候的日志如下内容



然后看下被管理的子进程被kill后是否能重启



可以看到启动后 python脚本运行pid为22917, 然后我kill -9的方式杀死后再次查看python脚本还是在运行只是pid变了,supervisor保证了python脚本异常退出后的重启。 


2.3、常用命令



通过如上命令可以管理supervisor的启停, 以及被管理项目的启停, 配置的更新。


更多信息可以去官方文档查看http://www.supervisord.org/ 


陪伴是最长情的告白

每日为你推送最in的测试技术

识别二维码

关注我们

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存